This disclosure relates generally to computer controlled systems for digital document processing within a networked environment, and more particularly to a system and method for automatic, system-generated suggested allocations for components using pre-allocated resources in the form of resource management profiles for optimization of resource utilization for various printing tasks.
In the area of digital printing and copying, various approaches have been applied in an attempt to dynamically optimize resource utilization for digital printing tasks. However, when large contiguous blocks of memory are required, it is not practical to allocate large or complex resources dynamically, and allocations must be set in advance. When a system can be used for a variety of applications, there is a likelihood that the initial allocation will not be efficient for all circumstances, and may in some instances lead to system failure. This problem has been addressed by several approaches. One of these approaches is a system imposed resource budget, which provides for average use, but is suboptimal in many situations.
Alternatively, a “garbage collector” in software periodically frees unused resources, or transfers little used resources to a secondary location, for example, virtual memory. However, this approach is not appropriate in some cases, such as for managing large contiguous blocks of physical memory. Another approach is adaptive resource management, which periodically evaluates resource demand, and automatically adjusts allocations, when necessary. However, in some cases it is not appropriate to change memory allocations automatically, even if they are not optimal. For example, changing mildly inefficient printer memory allocations in the middle of a print job could cause a delay, leading to poorer overall performance than if no change had been applied. In this instance, as in garbage collection, even if an efficient allocation is eventually achieved, the system typically starts from an inefficient state each time it is used for a different application.
An alternate approach is the use of resource management profiles, which enable an operator to assign a percentage of memory, or other resources, to each component for printing devices in a network printing system. Rather than using a single hard-coded resource budget, the Resource Profile Manager (RPM) lists feature areas supported by a printing device, and allows the operator to enable or disable specific features. The system would then use the resulting resource profile to coordinate static allocations of memory, or other resources, for the entire system in an intelligent way, optimizing system response for the stated pattern of feature use. However, this requires that an operator be sufficiently knowledgeable of resource requirements to make optimum selections.
It would be useful to have a resource management system that would periodically evaluate demand and automatically create a set of suggested allocations for all components that use pre-allocated resources. Such a system would preferably save system proposed allocations as a new resource profile. Once a profile is created and stored, it could be invoked manually by an operator at an appropriate time or applied automatically after a specified period of system idleness. Such an approach would enable more efficient use of resources, such as memory, within high end printing systems, and would provide for coordinated allocations across components. This would avoid the problems associated with system imposed resource budgets, a “garbage collector”, and adaptive resource management. Additionally, it would provide effective utilization of resources in those situations in which there are large variations in usage patterns or applications.
All U.S. patents and published U.S. patent applications cited herein are fully incorporated by reference. The following patents or publications are noted.
U.S. Pat. No. 6,898,602 to Sayag (“Measuring the Exact Memory Requirement of an Application Through Intensive Use of Garbage Collector”) describes a method and apparatus for the intensive use of garbage collection in order to determine the exact amount of memory that is consumed by a running application at any point of its execution. A garbage collector executes immediately prior to allocations of memory during execution of a program. The amount of memory used by the application is known after each such allocation of memory, and is very close to or equal to its theoretical requirement. A developer is enabled to determine whether a specified memory allotment for an application is exceeded.
U.S. Pat. No. 6,516,350 to Lumelsky et al. (“Self-regulated Resource Management of Distributed Computer Resources”) describes a distributed system for the management of distributed resources interconnected by a computer network and comprised of a plurality of limited supply resources (such as those associated with multimedia content servers). The system includes a plurality of server resources, preferably with target multimedia content, real time processing engines, etc., and a plurality of intermediary system resources (such as directories and resource monitors). The resources in any particular server are classified or partitioned as global or local, where the ratio of global to local is specified and controlled by the system. The system assigns clients across local and global resources and coordinates the placement of replicas of target content across global resources. The placement is dynamic and performed when necessary based on the analysis of utilization patterns of target content and replicas by pluralities of clients.
U.S. Pat. No. 5,745,652 to Bigus (“Adaptive Resource Allocation Using Neural Networks”) describes a resource allocation controller function, which is customized to a particular system's available resources and configuration, that dynamically allocates resources and/or alters configurations to accommodate a changing workload. The resource allocation controller is part of the computer's operating system which allocates resources of the computer system. The resource allocation controller uses a controller neural network for control, and a separate system model neural network for modeling the system and training the controller neural network. Performance data is collected by the system and used to train the system model neural network. A system administrator specifies computer system performance targets which indicate the desired performance of the system. Deviations in actual performance from desired performance are propagated back through the system model and ultimately to the controller neural network to create a closed loop system for resource allocation.
The disclosed embodiments provide examples of improved solutions to the problems noted in the above Background discussion and the art cited therein. There is shown in these examples an improved method for computer control of collaborating devices enabling automatic generation of resource management profiles to coordinate resource allocation within the collaborating device. The method includes utilization of a graphical user interface to select an initial resource management profile and instruct the device to automatically generate a resource profile. Timing is specified for creation of the automatically generated optimized resource profile. The optimized resource profile is developed from statistics maintained, collected, and interpreted about the demand for resources within each component of the collaborating device. An operator may elect to automatically invoke the most recently generated optimized profile after a specified period of collaborating device idleness or to invoke it upon an instruction from the operator. The optimized resource profile may be saved for future use or discarded.
In an alternate embodiment there is disclosed a system for computer control of collaborating devices in a networked environment. The system includes a resource management graphical user interface that causes the computer to perform method steps for controlling at least one collaborating device to automatically generate resource management profiles to coordinate resource allocation within the collaborating device. From the graphical user interface an operator selects a resource management profile, which may include a default resource profile delivered with the collaborating device, an existing resource profile, or a new profile, with each profile including collaborating device resource allocation settings associated with specific tasks. The operator may instruct the device to automatically generate an optimized resource profile through activation of a feature on said graphical user interface and may also specify timing for delivery of the optimized resource profile. The optimized resource profile is generated from statistics about the demand for resources within each component of the collaborating device. When the statistics have been collected and interpreted to produce the optimized profile, an operator may elect to apply the optimized profile automatically or upon the express command of the operator.
In yet another embodiment there is disclosed a resource management graphical user interface accessible on a computer-controlled printing system for causing the printing system to automatically generate resource management profiles to coordinate resource allocation within the printing system. The user interface displays a current resource management profile, which includes printing system resource allocations associated with specific jobs. The interface also includes a resource profile list of profile names for various job types. The features associated with each job type are associated with controls to enable an operator to set allocations for resource usage. An option is provided to instruct the printing system to generate at least one resource profile automatically. Operational options are also provided and include deleting a profile, approving a profile, applying a profile to a print job, saving a new profile, replacing an existing profile, and canceling a profile modification. The user interface further transmits instructions to apply a profile to the printing system for printing of a job.